package xin.alum.aim.coder;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ByteToMessageDecoder;
import xin.alum.aim.constant.AimConstant;

import java.util.List;

/**
 * @author Alum(alum @ live.cn)
 * @date 2021/8/30 9:35
 */
public class TagDecoder extends ByteToMessageDecoder {

    @Override
    protected void decode(ChannelHandlerContext ctx, ByteBuf byteBuf, List<Object> out) {
        //消息头，发生断包情况
        if (byteBuf.readableBytes() < AimConstant.DATA_HEADER_LENGTH) {
            return;
        }
        byteBuf.markReaderIndex();
        int tag = byteBuf.readInt();
        //TAG处理
        if (tag > 4) {
            byteBuf.resetReaderIndex();
            return;
        }
        //length处理
        ctx.fireChannelRead(byteBuf.retain());
    }
}
